package com.pic.mgt.manager.terminal;

import java.util.List;

/**
 * 端末管理在建立起來時不會自動進行同步，因此必須在端末管理建立起來後，第一件事就是必須先執行其同步化端末方法。
 * @author p10118178
 *
 */
public interface TerminalManager {
	
	/**
	 * 從資料庫同步最新的端末回來。
	 * @throws TerminalManagementOperationException
	 */
	public void synchronizeTerminals() throws TerminalManagementOperationException;
	
	/**
	 * 取得有效的端末清單(失效或未生效的端末將不會包含在內)，
	 * 此清單是位於 TerminalManager 內部中的清單，不是資料庫中的端末清單。
	 * @return
	 */
	public List<BasicTerminalInfoBean> getEffectiveBasicTerminalInfoBeanList();
	
	/**
	 * 檢查端末ID是否為有效的。有效的定義為:
     * (1) 存在於端末清單中。
     * (2) 介於端末生效日期範圍內。
	 * @param terminalId
	 * @return
	 */
	public boolean isEffectiveTerminalId(String terminalId);
	
	/**
	 * 檢查端末ID是否為有效的。有效的定義為:
     * (1) 存在於端末清單中。
     * (2) 介於端末生效日期範圍內。
	 * @param basicTerminalInfoBean
	 * @return
	 */
	public boolean isEffectiveTerminalId(BasicTerminalInfoBean basicTerminalInfoBean);
	
	/**
	 * 取得端末ID的基訊。指從 TerminalManager中的清單取出，不是從資料庫中取出。
	 * @param terminalId
	 * @return 若為 null，表示 TerminalManager 清單中找不到該端末。
	 */
	public BasicTerminalInfoBean getBasicTerminalInfoBean(String terminalId);
	
}
